package Threads.NotChange;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

//String使用的就是不可变，从而保证线程安全

public class Date_test {
    public static void main(String[] args) {
       // test1();
        test2();
    }

    //因为不是线程安全的，会发生java.lang.NumberFormatException异常
    public static void test1(){
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        for (int i=0;i<10;i++){
            new Thread(()->{
                try {
                    Thread.sleep(500);
                    System.out.println(simpleDateFormat.parse("2021-4-21"));
                } catch (ParseException | InterruptedException e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }

    //线程安全的实现
    //使用到的对象，是一个不可变类
    public static void test2(){
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        for (int i = 0; i < 10; i++) {
            new Thread(() -> {
                LocalDate date = dtf.parse("2021-10-01", LocalDate::from);
                System.out.println(date);
            }).start();
        }
    }
}
